gusucode.com > VC 达内MFC例子集源码-源码程序 > VC 达内MFC例子集源码-源码程序/code/20110104/day06.txt
一 MFC文档视图程序 1 MFC文档视图的各个部分 1.1 CWinApp 应用程序类,应用程序的 启动/消息处理等。类中还维护了 一个文档管理器。 1.2 CFrameWnd 框架窗口类,提供了窗 口的容器,可以放置菜单/工具栏/ 状态栏/视图等等窗口。 1.3 CView 视图类,提供了数据的显示 以及和用户交互操作。 1.4 CDocument 文档类,提供数据的维 护等操作。 1.5 CDocTemplate 文档模板类,提供了 对文档CDocument类的管理。 CSingleDocTemplate 单文档 CMultiDocTemplate 多文档 1.6 CDocManager 文档管理器,提供了 文档模板的管理 2 各部分的关系 2.1 CWinApp中维护一个文档管理器 CDocManager * m_pDocManager; 和主窗口m_pMainWnd. 2.2 文档管理器维护了一个文档模板的 链表 2.3 文档模板维护了文档对象. CSingleDocTemplate: 维护了一个文档. CMultiDocTemplate: 维护了一个文档的链表 2.4 CDocument文档当中,维护了一个 视图链表 2.5 CFrameWnd框架窗口,主要维护了 当前的活动视图m_pAcivetView; 2.6 CView视图,维护一个当前的视图 可以显示的文档指针m_pDocument; 3 创建过程 3.1 CWinApp创建应用程序 3.2 使用文档模板中的CreateNewDocument 创建文档. 3.3 使用文档模板中的CreateNewFrame 创建框架窗口 3.4 在框架窗口WM_CREATE消息中,使用 CreateView创建视图 4 命令消息处理过程 4.1 CView视图类 4.2 CDocument文档类 4.3 CFrameWnd框架窗口类 4.4 CWinApp应用程序类 二 MFC绘图 1 MFC绘图相关 CDC - 父类是CObject, 封装了HDC句柄 及大部分的关于绘图Win32 API。 CWindowDC - 父类CDC,是窗口的DC。是 以窗口的左上角和大小进行绘图的DC。 CClientDC - 父类CDC,是客户区的DC。 是以窗口的客户区左上角和大小进行 绘图的DC。 CPaintDC - 父类是CDC,是客户区的DC。 是以客户区的大小绘图。但是,它只能 使用在WM_PAINT消息中。 CMetaFileDC - 父类是CDC,以WMF或者 EMF文件方式进行绘图。 2 DC的使用 2.1 CDC的使用 2.1.1 创建或获取DC 创建 CDC::CreateDC( LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData ); lpszDriverName - 设备类型, 显示器"DISPLAY",打印机"WINSPOOL" 2.1.2 绘图 2.1.3 释放DC 释放 CDC::DeleteDC 2.2 窗口DC CWindowDC 是以窗口的边框的左上角为原点, 绘制区域是整个窗口包括边框. 2.3 客户区DC CClientDC 是以窗口内的客户区左上角为原点, 绘制区域只是在窗户的客户区之内. 注意:也可以使用CWnd提供的GetDC 函数获取客户区DC CDC * pDC = GetDC( ); ReleaseDC( pDC ); 2.4 WM_PAINT消息DC - CPaintDC CPaintDC的构造和析构函数中,分别 封装了BeginPaint和EndPaint处理, 所以只能使用在WM_PAINT消息中. 2.5 元文件DC - CMetaFileDC 2.5.1 创建DC Create/CreateEnhanced 2.5.2 绘图 2.5.3 关闭DC,获取HEMTAFILE句柄 Close/CloseEnhanced 2.5.4 显示绘图 可显示DC的PlayMetaFile 2.5.5 删除句柄 DeleteMetaFile 三 MFC绘图对象 1 GDI绘图对象(GDI Object) 画笔(HPEN)画刷(HBRUSH)字体(HFONT) 位图(HBIMAP) 调色板(HPALLETE) 区域(HRGN) 2 MFC相关类 CPen - 画笔 CBrush - 画刷 CFont - 字体 CBitmap - 位图 CPallete - 调色板 CRgn - 区域 3 画笔CPen 3.1 创建画笔 3.2 选择画笔 3.3 绘图 3.4 选出画笔 4 画刷CBrush 4.1 创建画刷 4.2 选择画刷 4.3 绘图 4.4 选出画刷 5 字体CFont 4.1 创建字体 4.2 选择字体 4.3 输出文字 4.4 选出字体 6 位图 CBitmap 6.1 加载位图 6.2 创建一个当前DC湘匹配的DC 6.3 将位图放入DC 6.4 绘制DC 6.5 选出位图 6.6 删除DC 6.7 注意: 使用LoadImage函数加载BMP格式图片